#include <gtest/gtest.h>
#include <iostream>
using namespace std;

// C++和JAVA不一样，当你声明一个变量时便调用类这个变量类的构造函数类。

//构造函数(与类名相同)
//析构函数：没有参数也没有任何返回类型，被自动调用
class Test
{
public:
    Test();//无参构造函数
    ~Test();//析构函数:先创建的对象后释放
    void print()
    {
        cout << a << endl;
        cout << p << endl;
    }
private:
    int a;
    char *p;
};

Test::Test()//完成对属性的初始化工作
{
    a = 10;
    p = (char*)malloc(sizeof(100));
    strcpy(p, "Rita");
    cout<< "我是构造函数" << endl;
}

Test::~Test()
{
    if (p != NULL)
    {
        free(p);
    }
    cout << "我是析构函数，我被调用了" << endl;
}
//给对象搭建一个平台，研究对象的行为
void objplay()
{
    //先创建的对象后释放
    Test t1;
    t1.print();
    printf("分隔符\n");
    Test t2;
    t2.print();
}
int classFieldLifeCycle()
{
    objplay();
    return 0;
}

TEST(classFieldLifeCycleTest,test1){
    ASSERT_EQ(0,classFieldLifeCycle());
}
